/**
 * 
 */
package de.cbf.cam.dsa.dataprovider.weapons;

import java.util.ArrayList;
import java.util.List;

import de.cbf.cam.dsa.model.entities.WeaponStyle;
import de.cbf.cam.dsa.model.entities.constants.WeaponSpecialConstants;
import de.cbf.cam.dsa.model.entities.constants.WeaponStyleTemplates;
import de.cbf.cam.dsa.model.entities.weapon.WeaponMelee;

/**
 * @author Nebelritter
 *
 */
public class ProviderStaffs {
	
	private static ProviderStaffs instance = new ProviderStaffs();
	
	public static ProviderStaffs getInstance(){
		return instance;
	}
	
	public List<WeaponMelee> provideStaffs(){
		List<WeaponMelee> resultList = new ArrayList<WeaponMelee>();
		resultList.add(provideKampfstab());	
		resultList.add(provideMagierstab());
		resultList.add(provideZweililien());	
		return resultList;
	}
	
	private WeaponMelee provideKampfstab(){
		WeaponMelee weapon =new WeaponMelee();
		weapon.setWeaponType("Kampfstab");		
		weapon.setTpDiceNumber(1);
		weapon.setTpDiceSides(6);
		weapon.setTpBonus(1);		
		weapon.setKKTreshold(12);
		weapon.setKKStep(4);		
		weapon.setWeight(80);
		weapon.setWeapLength(150);		
		weapon.setBf(5);		
		weapon.setIniMod(1);		
		weapon.setPrice(40);		
		weapon.setWmAT(0);
		weapon.setWmPA(0);		
		weapon.setSpecialStates(WeaponSpecialConstants.STATE_twoHand);
		weapon.setDkBits(WeaponMelee.DKN|WeaponMelee.DKS);
		weapon.setWear("");
		//weapon styles
		WeaponStyle style = WeaponStyleTemplates.provideStaebe();
		style.setName("Kampfstab");
		
		weapon.addStyle(style);
		return weapon;		
	}
	
	private WeaponMelee provideMagierstab(){
		WeaponMelee weapon =new WeaponMelee();
		weapon.setWeaponType("Magierstab");		
		weapon.setTpDiceNumber(1);
		weapon.setTpDiceSides(6);
		weapon.setTpBonus(1);		
		weapon.setKKTreshold(11);
		weapon.setKKStep(5);		
		weapon.setWeight(90);
		weapon.setWeapLength(150);		
		weapon.setBf(-12);		
		weapon.setIniMod(0);		
		weapon.setPrice(-1);		
		weapon.setWmAT(-1);
		weapon.setWmPA(-1);
		weapon.setSpecialStates(WeaponSpecialConstants.STATE_twoHand|WeaponSpecialConstants.STATE_priviliged);
		weapon.setDkBits(WeaponMelee.DKN|WeaponMelee.DKS);	
		weapon.setWear("");
		//weapon styles
		WeaponStyle style = WeaponStyleTemplates.provideDolche();
		style.setName("Kampfstab");
		
		weapon.addStyle(style);
		return weapon;		
	}
	
	private WeaponMelee provideZweililien(){
		WeaponMelee weapon =new WeaponMelee();
		weapon.setWeaponType("Zweililien");		
		weapon.setTpDiceNumber(1);
		weapon.setTpDiceSides(6);
		weapon.setTpBonus(3);		
		weapon.setKKTreshold(12);
		weapon.setKKStep(4);		
		weapon.setWeight(80);
		weapon.setWeapLength(140);		
		weapon.setBf(4);		
		weapon.setIniMod(1);		
		weapon.setPrice(200);		
		weapon.setWmAT(1);
		weapon.setWmPA(-1);		
		weapon.setSpecialStates(WeaponSpecialConstants.STATE_twoHand);
		weapon.setDkBits(WeaponMelee.DKN);
		weapon.setWear("");
		//weapon styles
		WeaponStyle style = WeaponStyleTemplates.provideStaebe();
		style.setName("Kampfstab");
		
		weapon.addStyle(style);
		return weapon;		
	}
}
